home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / minpack / hybrd1.f < prev    next >
Text File  |  1996-07-19  |  4KB  |  124 lines

  1.       SUBROUTINE HYBRD1(FCN,N,X,FVEC,TOL,INFO,WA,LWA)
  2.       INTEGER N,INFO,LWA
  3.       DOUBLE PRECISION TOL
  4.       DOUBLE PRECISION X(N),FVEC(N),WA(LWA)
  5.       EXTERNAL FCN
  6. C     **********
  7. C
  8. C     SUBROUTINE HYBRD1
  9. C
  10. C     THE PURPOSE OF HYBRD1 IS TO FIND A ZERO OF A SYSTEM OF
  11. C     N NONLINEAR FUNCTIONS IN N VARIABLES BY A MODIFICATION
  12. C     OF THE POWELL HYBRID METHOD. THIS IS DONE BY USING THE
  13. C     MORE GENERAL NONLINEAR EQUATION SOLVER HYBRD. THE USER
  14. C     MUST PROVIDE A SUBROUTINE WHICH CALCULATES THE FUNCTIONS.
  15. C     THE JACOBIAN IS THEN CALCULATED BY A FORWARD-DIFFERENCE
  16. C     APPROXIMATION.
  17. C
  18. C     THE SUBROUTINE STATEMENT IS
  19. C
  20. C       SUBROUTINE HYBRD1(FCN,N,X,FVEC,TOL,INFO,WA,LWA)
  21. C
  22. C     WHERE
  23. C
  24. C       FCN IS THE NAME OF THE USER-SUPPLIED SUBROUTINE WHICH
  25. C         CALCULATES THE FUNCTIONS. FCN MUST BE DECLARED
  26. C         IN AN EXTERNAL STATEMENT IN THE USER CALLING
  27. C         PROGRAM, AND SHOULD BE WRITTEN AS FOLLOWS.
  28. C
  29. C         SUBROUTINE FCN(N,X,FVEC,IFLAG)
  30. C         INTEGER N,IFLAG
  31. C         DOUBLE PRECISION X(N),FVEC(N)
  32. C         ----------
  33. C         CALCULATE THE FUNCTIONS AT X AND
  34. C         RETURN THIS VECTOR IN FVEC.
  35. C         ---------
  36. C         RETURN
  37. C         END
  38. C
  39. C         THE VALUE OF IFLAG SHOULD NOT BE CHANGED BY FCN UNLESS
  40. C         THE USER WANTS TO TERMINATE EXECUTION OF HYBRD1.
  41. C         IN THIS CASE SET IFLAG TO A NEGATIVE INTEGER.
  42. C
  43. C       N IS A POSITIVE INTEGER INPUT VARIABLE SET TO THE NUMBER
  44. C         OF FUNCTIONS AND VARIABLES.
  45. C
  46. C       X IS AN ARRAY OF LENGTH N. ON INPUT X MUST CONTAIN
  47. C         AN INITIAL ESTIMATE OF THE SOLUTION VECTOR. ON OUTPUT X
  48. C         CONTAINS THE FINAL ESTIMATE OF THE SOLUTION VECTOR.
  49. C
  50. C       FVEC IS AN OUTPUT ARRAY OF LENGTH N WHICH CONTAINS
  51. C         THE FUNCTIONS EVALUATED AT THE OUTPUT X.
  52. C
  53. C       TOL IS A NONNEGATIVE INPUT VARIABLE. TERMINATION OCCURS
  54. C         WHEN THE ALGORITHM ESTIMATES THAT THE RELATIVE ERROR
  55. C         BETWEEN X AND THE SOLUTION IS AT MOST TOL.
  56. C
  57. C       INFO IS AN INTEGER OUTPUT VARIABLE. IF THE USER HAS
  58. C         TERMINATED EXECUTION, INFO IS SET TO THE (NEGATIVE)
  59. C         VALUE OF IFLAG. SEE DESCRIPTION OF FCN. OTHERWISE,
  60. C         INFO IS SET AS FOLLOWS.
  61. C
  62. C         INFO = 0   IMPROPER INPUT PARAMETERS.
  63. C
  64. C         INFO = 1   ALGORITHM ESTIMATES THAT THE RELATIVE ERROR
  65. C                    BETWEEN X AND THE SOLUTION IS AT MOST TOL.
  66. C
  67. C         INFO = 2   NUMBER OF CALLS TO FCN HAS REACHED OR EXCEEDED
  68. C                    200*(N+1).
  69. C
  70. C         INFO = 3   TOL IS TOO SMALL. NO FURTHER IMPROVEMENT IN
  71. C                    THE APPROXIMATE SOLUTION X IS POSSIBLE.
  72. C
  73. C         INFO = 4   ITERATION IS NOT MAKING GOOD PROGRESS.
  74. C
  75. C       WA IS A WORK ARRAY OF LENGTH LWA.
  76. C
  77. C       LWA IS A POSITIVE INTEGER INPUT VARIABLE NOT LESS THAN
  78. C         (N*(3*N+13))/2.
  79. C
  80. C     SUBPROGRAMS CALLED
  81. C
  82. C       USER-SUPPLIED ...... FCN
  83. C
  84. C       MINPACK-SUPPLIED ... HYBRD
  85. C
  86. C     MINPACK. VERSION OF JULY 1979.
  87. C     BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE
  88. C
  89. C     **********
  90.       INTEGER INDEX,J,LR,MAXFEV,ML,MODE,MU,NFEV,NPRINT
  91.       DOUBLE PRECISION EPSFCN,FACTOR,ONE,XTOL,ZERO
  92.       DATA FACTOR,ONE,ZERO /1.0D2,1.0D0,0.0D0/
  93.       INFO = 0
  94. C
  95. C     CHECK THE INPUT PARAMETERS FOR ERRORS.
  96. C
  97.       IF (N .LE. 0 .OR. TOL .LT. ZERO .OR. LWA .LT. (N*(3*N + 13))/2)
  98.      *   GO TO 20
  99. C
  100. C     CALL HYBRD.
  101. C
  102.       MAXFEV = 200*(N + 1)
  103.       XTOL = TOL
  104.       ML = N - 1
  105.       MU = N - 1
  106.       EPSFCN = ZERO
  107.       MODE = 2
  108.       DO 10 J = 1, N
  109.          WA(J) = ONE
  110.    10    CONTINUE
  111.       NPRINT = 0
  112.       LR = (N*(N + 1))/2
  113.       INDEX = 6*N + LR
  114.       CALL HYBRD(FCN,N,X,FVEC,XTOL,MAXFEV,ML,MU,EPSFCN,WA(1),MODE,
  115.      *           FACTOR,NPRINT,INFO,NFEV,WA(INDEX+1),N,WA(6*N+1),LR,
  116.      *           WA(N+1),WA(2*N+1),WA(3*N+1),WA(4*N+1),WA(5*N+1))
  117.       IF (INFO .EQ. 5) INFO = 4
  118.    20 CONTINUE
  119.       RETURN
  120. C
  121. C     LAST CARD OF SUBROUTINE HYBRD1.
  122. C
  123.       END
  124.